package org.yzl.designPatterns.observer;

import org.yzl.designPatterns.observer.impl.ObserverAImpl;
import org.yzl.designPatterns.observer.impl.ObserverBImpl;

/**
 * 观察者模式
 * 当一个对象变化时，其它依赖该对象的对象都会收到通知，并且随着变化！
 * MySubject类就是我们的主对象，ObserverAImpl和ObserverBImpl是依赖于MySubject的对象，
 * 当MySubject变化时，Observer1和Observer2必然变化。
 * SubjectImpl类中定义着需要监控的对象列表，可以对其进行修改：增加或删除被监控对象，且当MySubject变化时，负责通知在列表内存在的对象
 */
public class ObserverTest {
    public static void main(String[] args) {
        MySubject mySubject = new MySubject();
        mySubject.add(new ObserverAImpl());
        mySubject.add(new ObserverAImpl());
        mySubject.add(new ObserverBImpl());
        mySubject.operation();
    }
}
